Azure SQL Database Always Encrypted
https://www.cs.purdue.edu/homes/csjgwang/cloudb/EncrptedSQLSIGMOD20.pdf
3つの技術的課題をあげている
SQL Serverがさまざまな場面(オンプレ・Azure・他のクラウド)でデプロイされる際に、Enclaveのコードを検証(attest)するためのサービスが必要であること
trusted enclaveとuntrusted SQL Serverでそれぞれクエリ処理をどう分けるか、そしてアクセスパターンからのデータ漏洩をどう扱うか
顧客データの秘匿要件を満たしつつ、顧客からフィードバックされるEnclave由来のエラーの分析やデバッグをどうするか
cipepser.icon 課題のわかりみが深い
ここでは特に鍵管理とEnclaveを用いたインデックス処理について見ていく。
鍵管理
2階層の鍵構成
Column master key (CMK):
Key Providerで管理し、SQL ServerはそのKey ProviderへのURIのみを保存(アクセスはできず識別子として)
Key Provider:
Azure Key Vault、Windows Certificate store、java Key Store、HSM内でのKey Storeをデフォルトでサポート
顧客が自由に設定可能な拡張プラグインも用意
Column encryption key (CEK):
32bytes AES key
実際にデータを暗号化する鍵。CMKにより暗号化されDBに保存。
cipepser.icon この鍵はDBも使う?例えば、where句でvalueに応じた処理をDB内で行いたいケース。
osuke.icon そのイメージ。アプリケーション開発者はdriverを介すことで、透過的に扱える設計
https://gyazo.com/868d6b2ef64be071fabc3cb744dc02cd
CMK自体以外の全ての鍵関連メタデータをDBに記録する
CEKはCMKにより暗号化されSQL Serverへ記録
以下が、CEKとCMKをprovisioningするDDLである
CREATE COLUMN MASTER KEY MyCMK WITH...
CMKのメタデータを記録
CMKによりメタデータを署名することでSQL Serverが改ざんできないように。
CREATE COLUMN ENCRYPTION KEY MyCEK...
RSA-OAEPでCMKにより暗号化されたCEKを記録
CREATE TABLE T...
平文のTypeと使うCEKに応じて暗号文のTypeを設定可能に。
encrypted string, encrypted integer, encrypted datetime,...
https://gyazo.com/dd36369f2bd87f6f7581672f6725f543
インデックス処理
SQL ServerのストレージエンジンではB+ツリーによるインデックスに対応している
前提:B+ツリーのインデックス
固定サイズ(4KB)ごとのページに分割し、複数のキーと子ページへの参照を含む
ページ単位で一度に読み書きがされる
(基本的に)リーフページにインラインでそれぞれのキーに対する値が含まれている
バランスが保たれることが保証され、ページサイズ4KBで深さ4レベル、分岐係数(1ページ内の参照数)が500のツリーは最大256TB保存可能)
キーは暗号化されており、それぞれのページでenclave内で比較処理し参照するページを探索
https://gyazo.com/fbc669b09c4b343e69a5d0e4b68f53e0
Product
セキュア エンクレーブを使用する Always Encrypted
https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/always-encrypted-database-engine?view=sql-server-2017
鍵管理
https://docs.microsoft.com/ja-jp/sql/relational-databases/security/encryption/overview-of-key-management-for-always-encrypted?view=sql-server-ver15
https://gyazo.com/fbae0f636a666e4ace1aeacee3f7138d
https://docs.microsoft.com/ja-jp/sql/relational-databases/security/encryption/always-encrypted-enclaves-manage-keys?view=sql-server-ver15
機密クエリ
https://gyazo.com/f4aacd80e4dc03499531b2ef46ec2762
まとめ
注目だ